<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {

    public function _initRoute() {
        /*
         *  парсим Url
         */
        $urlparts = @explode('/', $_SERVER['REDIRECT_URL']);
        array_shift($urlparts);
        if(count($urlparts) && $urlparts[count($urlparts)-1] == '')
            unset($urlparts[count($urlparts)-1]);
        $url_parts = array();
        if(is_array($urlparts) && count($urlparts)){
            foreach ($urlparts as $urlp){
                $url_parts[] = urldecode($urlp);
            }
        }
        /*
         *  первый элемент - имя подключаемого модуля
         */
        $module = !empty($url_parts[0]) ? ($url_parts[0]) : false;
        if ($module == 'page') {  //навигация на главной, частный случай
            $router = Zend_Controller_Front::getInstance()->getRouter();
            $route_static = new Zend_Controller_Router_Route(
                            '/page/:page',
                            array(
                                'controller' => 'index',
                                'action' => 'index',
                                'page' => 1
                            ),
                            array(
                                'page' => '[\w\-]+'
                            )
            );
            $router->addRoute('static', $route_static);
        } elseif (!empty($module) && !in_array($module, array('admin','add-comment'))) { //перенаправляем на контроллер Pages, если это не админка

                $controller = 'pages';
                /* проверяем, может это категория */
                $CTM = new Application_Model_CatsAndTags();
                $categories_url = $CTM->getCategories();
                if (in_array($module, $categories_url) && $module != 'note' && ((isset($url_parts[1]) && $url_parts[1] == 'page') || count($url_parts) === 1)){
                   $controller = 'categories';
                }
                /* проверяем, может это метка */
                $tags_url = $CTM->getTags();
                if (in_array($module, $tags_url) && ((isset($url_parts[1]) && $url_parts[1] == 'page') || count($url_parts) === 1)){
                   $controller = 'tags';
                }

                // Получаем маршрут, по-умолчанию
                $router = Zend_Controller_Front::getInstance()->getRouter();
                // создаем пользовательские маршруты
                // маршрут для статических страниц

                $rout_path = '';
                $var_value = array();
                // последний элемент урла это и есть искомый урл страницы,
                // заносится в переменную page
                // в экшине $page = $this->getRequest()->getParam('page');
                // в данном случе это не актуально, тк все ссылки страниц не имеют подкатегорий,
                // сделано на будущее
                for ($i = 0; $i < count($url_parts); $i++) {
                    if ($i == count($url_parts) - 1) {
                        $rout_path .= '/:page';
                        $var_value['page'] = '[\w\-]+';
                    } else {
                        $rout_path .= '/:' . $url_parts[$i];
                        $var_value[$url_parts[$i]] = '[\w\-]+';
                    }
                }
//                _debug($rout_path); _debug($var_value,1);
                $route_static = new Zend_Controller_Router_Route(
                                $rout_path,
                                array(
                                    'controller' => $controller,
                                    'action' => 'index',
                                    'page' => 'default-page-name'
                                ),
                                $var_value
                );
                $router->addRoute('static', $route_static);

                /*
                  для простых случаев типо, /page1
                 * /page1/page2 уже не прокатит
                  $route_static = new Zend_Controller_Router_Route(
                  '/:page',
                  array(
                  'controller' => 'pages',
                  'action' => 'index',
                  'page' => 'default-page-name'
                  ),
                  array(
                  'page' => '[\w\-]+'
                  )
                  );
                  $router->addRoute('static', $route_static);
                 *
                 */
        }
    }

}

